package itheima01;

import com.mysql.jdbc.Driver;

import java.sql.DriverManager;
import java.sql.SQLException;

/*
    开发步骤
    1.注册驱动
        java.sql.DriverManager类: 管理一组 JDBC 驱动程序的基本服务。
        静态方法:
            static void registerDriver(Driver driver) : 向 DriverManager 注册给定驱动程序。
            参数:
                java.sql.Driver接口: 必然传递实现类对象 每个驱动程序类必须实现的接口

                目前使用的是MySql,那么MySql驱动程序中必然有类实现Driver接口,覆盖重写抽象方法
                通过查看导入的闸包的源代码,发现有个类:
                    com.mysql.jdbc.Driver类: 实现了Driver接口
                    //D:\java349\day18\lib\mysql-connector-java-5.1.37-bin.jar!\com\mysql\jdbc\Driver.class
                    内部有public修饰的空参构造,可以直接new对象



 */
public class Demo02DBC {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        //1.注册驱动
        //方式一
        /*
            new Driver() 创建对象,需要加载.class文件到内存,
            而Driver类中有个静态代码块,加载时,就被执行
            静态代码块中,也有注册驱动的动作
            导致: 注册了两遍
            不用
         */
        //new Driver()是导入的闸包的文件calss
        //DriverManager.registerDriver(new Driver());

        //方式二: 类名是写死了 不用，万一驱动Java文件不是这个类名
        //new Driver();

        //方式三:
        /*
            通过反射获取类的Class对象,
            首先检测该类是否被加载到内存,没有加载,就会加载
            目前第一次使用,类就会被加载,静态代码块会被执行,
            内部就完成了驱动的注册
            好处: 参数是String类型的全类名,可以写到配置文件中
         */
        //直接调用驱动Java文件的地址字节码对象
        //jar包里面的类，用于驱动调动mysql数据库
        Class.forName("com.mysql.jdbc.Driver");
    }
}
